1. Field of the Invention
The present invention generally relates to a method of controlling a plurality of tone generator drivers of different types in an integrated manner, and a machine readable medium storing a control program for a plurality of tone generator drivers.
2. Description of Related Art
Recently, rapid enhancement in the computational capabilities of microprocessors (or CPUs) has been increasingly finding their applications in general-purpose computers and tone generators. Execution of a tone generating program or module on these general-purpose computers has realized systems for generating tone waveform data. On the other hand, generation of tone waveform data by means of a dedicated hardware device having a circuit configuration adapted to the tone generation is practiced conventionally.
FIG. 13 shows a software configuration used in a conventional tone generating system supported by computer software. An operating system (OS) 101 for this tone generating system is Windows 95 (trademark of Microsoft Corporation) for example. The OS 101 has an interface IF1 (MIDI-Out API) and an interface IF2 (MIDI-Out API) that transfer MIDI (Musical Instrument Digital Interface) messages representing performance information for generating tone waveform data, and an interface IF3 (WAVE-Out API) that transfers generated tone waveform data.
In the example shown, the interface IF1 (MIDI-Out API) is used as an interface for a software tone generator adapted to generate tone waveform data by having a CPU (central processing unit) execute a predetermined tone generating program. The interface IF2 (MIDI-Out API) is used for a hardware tone generator adapted to generate tone waveform data by means of a dedicated hardware device having a circuit configuration suitable for a particular tone generating scheme.
Music application software 100 for generating a MIDI message is located in the application layer for generating performance information in the form of a MIDI message in a real-time manner. A second MIDI driver (a hardware tone generator) and a third MIDI driver (a software tone generator) are installed on the OS 101. The second MIDI driver supplies control data based on the MIDI message to an external hardware tone generator 103. The third MIDI driver is a kind of an application software.
In the example shown in FIG. 13, the MIDI message generated by the music application software 100 is received by the third MIDI driver through the interface IF1 (MIDI-Out API) provided on the OS 101. Having received the MIDI message, the third MIDI driver generates the tone waveform data based on the received MIDI message and supplies through the interface IF3 (WAVE-Out API) the generated tone waveform data to a first WAVE driver installed on the OS 101. The first WAVE driver reads through a direct memory access (DMA) controller the tone waveform data stored in a buffer memory, and supplies the read data to a CODEC (COder/DECoder) 105, which is an external hardware device. The CODEC 105 converts the tone waveform data into an analog tone signal, which is then sounded from a sound system not shown.
The third MIDI driver computes tone waveform data a sample by sample within one frame period, thereby generating one frame of the tone waveform data. The generated tone waveform data is stored in a buffer memory. The third MIDI driver generates one frame of tone waveform data while controlling a delay time of the computation for data generation and controlling an amount of tone waveform data generated in a unit time. A subroutine library 102 of the third MIDI driver stores general-purpose modules (or subroutines) for use in the computation for generating tone waveform data such as a digital filter, an interpolator, and a mixer. By use of these general-purpose modules, the third MIDI driver generates tone waveform data having required musical properties such as pitch and timbre.
In the conventional computer-based tone generating system as shown in FIG. 13, a MIDI message generated by the music application software 100 is received by the third MIDI driver through the interface IF1 (MIDI-Out API) provided in the OS 101. Alternatively, the tone generating system may be programmed so that a MIDI message generated by the music application software 100 is received by the second MIDI driver through the other interface IF2 (MIDI-Out API) provided in the OS 101. In this case, the second MIDI driver supplies the tone control data based on the received MIDI message to the external hardware tone generator 103, in which a tone waveform is generated based on the tone control data and the generated tone waveform is sounded.
However, the above-mentioned conventional tone generating system presents a problem that, because this system can set up a MIDI driver only before starting music performance, this system cannot dynamically change MIDI drivers during the music performance. Therefore, the conventional tone generating system cannot generate tone waveform data for different performance parts by use of different tone generators in the sounding of the generated tone waveform data.
Another problem involved in the conventional tone generating system is that a MIDI driver not installed on the operating system cannot be used. Newly installing a MIDI driver onto the operation system requires cumbersome operations such as rebooting the system.
Generating tones by use of a software tone generator requires a WAVE driver. If a plurality of MIDI drivers each constituted by a software tone generator are used, a plurality of WAVE drivers are required, presenting a problem of shortage of WAVE drivers during the music performance. It is not possible for the conventional system to open a new WAVE driver even when the system suffers from the shortage of the existing WAVE driver. Further, in the case where a plurality of MIDI drivers each constituted by a software tone generator are used, the conventional tone generating system does not consider control on relative delay times caused in computing process of the generation of tone waveform data among the plurality of the tone generators, nor does consider on variation of the amount of tone waveform data generated in a unit time among the plurality of the tone generators.